---
sidebar_label: 输出解析器
sidebar_position: 2
---

import CodeBlock from "@theme/CodeBlock";


# 输出解析器

:::info
[概念指南](https://docs.langchain.com/docs/components/prompts/output-parser)
:::

语言模型输出文本。但很多时候，你可能希望获得比只有文本更结构化的信息。这就是输出解析器所在的地方。

输出解析器是用于帮助结构化语言模型响应的类。输出解析器必须实现两种主要方法:

- `getFormatInstructions(): str` 一种方法，返回包含有关如何格式化语言模型输出的说明的字符串。
- `parse(raw: string): any` 一种方法，接受一个字符串（假定为语言模型的响应)并将其解析为某些结构。

还有一种可选的方法:

- `parseWithPrompt(text: string， prompt: BasePromptValue): any`: 一种方法，接受一个字符串（假定为语言模型的响应)和一个格式化的提示（假定生成这样一个响应的提示)并将其解析为某些结构。提示在很大程度上是在事件中提供的，以防OutputParser希望重试或以某种方式修复输出
需要提示中的信息来执行此操作。

以下是一些输出解析器示例。

## 结构化输出解析器

当您想返回多个字段时，可以使用此输出解析器。
import Structured from "!!raw-loader!@examples/prompts/structured_parser.ts";


<CodeBlock language="typescript">{Structured}</CodeBlock>


## 带有Zod模式的结构化输出解析器


当您想使用 TypeScript 验证库 Zod 定义输出模式时，此输出解析器也可以使用。传入的 Zod 模式需要可以从 JSON 字符串中解析， 所以例如 `z.date()` 并不被允许， 但是 `z.coerce.date()` 是可以的。


import StructuredZod from "!!raw-loader!@examples/prompts/structured_parser_zod.ts";



<CodeBlock language="typescript">{StructuredZod}</CodeBlock>



## 输出修复解析器（Output Fixing Parser)


此输出解析器可以包裹另一个输出解析器， 并在第一个解析器失败时调用另一个 LLM 来修复任何错误。


import Fix from "!!raw-loader!@examples/prompts/fix_parser.ts";



<CodeBlock language="typescript">{Fix}</CodeBlock>



## 逗号分隔列表解析器（Comma-separated List Parser)


当您想返回一个逗号分隔的列表项时，可以使用此输出解析器。


import Comma from "!!raw-loader!@examples/prompts/comma_list_parser.ts";



<CodeBlock language="typescript">{Comma}</CodeBlock>



## 自定义列表解析器（Custom List Parser)


当您想返回一个具有特定长度和分隔符的项目列表时，可以使用此输出解析器。


import CustomList from "!!raw-loader!@examples/prompts/custom_list_parser.ts";



<CodeBlock language="typescript">{CustomList}</CodeBlock>



## 合并输出解析器（Combining Output Parsers)


可以使用 `CombiningOutputParser` 来组合输出解析器。此输出解析器接受输出解析器列表， 并将请求（并解析)包含所有解析器所有字段的组合输出。


import Combining from "!!raw-loader!@examples/prompts/combining_parser.ts";



<CodeBlock language="typescript">{Combining}</CodeBlock>

